﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EntidadesDeNegocio
{
    public class PiezaAerea:Componente
    {
        /// <summary>
        /// Altitud de la pieza
        /// </summary>
        public decimal Altitud { get; set; }
        /// <summary>
        /// Velocidad de la pieza
        /// </summary>
        public decimal Velocidad { get; set; }
        /// <summary>
        /// Devuelve el tipo de componente
        /// </summary>
        /// <returns></returns>
        public override TipoComponente GetTipo()
        {
            return TipoComponente.PiezaAerea;
        }
        /// <summary>
        /// Constuctor con parametros
        /// </summary>
        /// <param name="modelo"></param>
        /// <param name="numeroSerie"></param>
        /// <param name="medio"></param>
        /// <param name="costo"></param>
        /// <param name="descripcion"></param>
        /// <param name="fechaCreacion"></param>
        /// <param name="cantidad"></param>
        public PiezaAerea(string modelo, string numeroSerie, MedioComponente medio, decimal costo, string descripcion, DateTime fechaCreacion, int cantidad,DateTime fechaService,decimal altitud,decimal velocidad)
            : base(modelo, numeroSerie, medio, costo, descripcion, fechaCreacion, cantidad,fechaService)
        {
            this.Velocidad=velocidad;
            this.Altitud=altitud;

        }
        /// <summary>
        /// Constructor sin parametros
        /// </summary>
        public PiezaAerea() { }
        public override void AgregarComponente(Componente componente)
        {
            //No se implementa
        }

        public override void ElimnarComponente(Componente componente)
        {
            //No se implementa
        }
        /// <summary>
        /// Clona el objecto
        /// </summary>
        /// <returns></returns>
        public override Componente Clone()
        {
            PiezaAerea p = new PiezaAerea(this.Modelo, this.NumeroSerie, this.Medio, this.Costo, this.Descripcion, this.FechaCreacion, this.Cantidad, this.FechaService, this.Altitud,this.Velocidad);
            p.Oid = this.Oid;
            return p;
        }
        /// <summary>
        /// Devuelve el componente con el modelo indicado
        /// </summary>
        /// <param name="modelo"></param>
        /// <returns></returns>
        public override Componente ObtenerComponente(string modelo)
        {
            Componente comp = null;
            if (this.Modelo.Equals(modelo))
                comp=this;
            return comp;
        }
        /// <summary>
        /// Aceptar visitor
        /// </summary>
        /// <param name="visitor"></param>
        public override void AceptarVisitor(IVisitor visitor)
        {
            visitor.VisitorPiezaAerea(this);
        }
    }
}
